The development of new programs for computing devices is an extensive, time consuming, and tedious process that requires thousands of man-hours and thousands of machine-hours. Typically, a program is developed piecemeal by a group of developers. Once the program has been developed, the entire program is submitted to a group of testers for testing. When modifications are made to the program, the entire program is resubmitted and retested regardless of the extent of the modifications.
Such a system for program development may be sufficient for small programming projects; however, as the size of the programming code increases, so does the man-hour and machine-hour requirements for testing. For example, a large program development may require over nine hundred developers writing upwards of forty-five million lines of code. These lines of code must be tested. For such a large project, over thirteen hundred testers may be required to write the nearly thirty thousand tests for testing such a program. Testing such a program may take upwards of twelve hundred machine hours.
Typically, during the development process, programs are modified. When modifications are made to the program, the entire program is resubmitted for testing even if a very small modification is made to the program. This may require all the tests to be executed again, even on portions of the program that have not changed. Such inefficient testing consumes man-hours, machine-hours, development time, and discourages developers from testing code.